package br.com.kees.managedBean;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.model.SelectItem;

import org.primefaces.event.SelectEvent;

import br.com.kees.entidade.Grupo;
import br.com.kees.entidade.Usuario;
import br.com.kees.exception.KeesException;
import br.com.kees.persistencia.GrupoDao;
import br.com.kees.persistencia.UsuarioDao;
import br.com.kees.util.JSFUtil;
import br.com.kees.util.Mensagem;

@ManagedBean(name = "UsuarioMb")
@ViewScoped
public class UsuarioMb {
	
	private List<Grupo> comboGrupo = new ArrayList<Grupo>();
	private List<SelectItem> comboSimNao = new ArrayList<SelectItem>();
	
	private Usuario obj = new Usuario();
	private List<Usuario> lista = new ArrayList<Usuario>();
	
	@PostConstruct
	public void inicial() {
		try {
			obj.setGrupo(new Grupo());
			lista = new UsuarioDao().getAll();
			comboGrupo = new GrupoDao().getAll();
			comboSimNao = JSFUtil.ComboSimNao();
			obj.setGrupo(comboGrupo.get(0));
		} catch (KeesException e) {
			Mensagem.erro("Erro ao carregar tela");
		}
	}
	
	public void selecionar(SelectEvent event) {
		this.obj = (Usuario) event.getObject();
	}
	
	public void limpar() {
		obj = new Usuario();
		obj.setGrupo(new Grupo());
		obj.setGrupo(comboGrupo.get(0));
	}
	
	public void alterarEnviarEmail(Usuario obj) {
		if (obj.getEnviar_email().equals("S"))
			obj.setEnviar_email("N");
		else
			obj.setEnviar_email("S");
		try {
			new UsuarioDao().edit(obj);
			limpar();
			lista = new UsuarioDao().getAll();
			Mensagem.sucesso("Alterado com sucesso");
		} catch (KeesException e) {
			Mensagem.erro("Erro ao Alterar");
		}
	}
	
	public void alterarAtivado(Usuario obj) {
		if (obj.getAtivado().equals("S"))
			obj.setAtivado("N");
		else
			obj.setAtivado("S");
		try {
			new UsuarioDao().edit(obj);
			limpar();
			lista = new UsuarioDao().getAll();
			Mensagem.sucesso("Alterado com sucesso");
		} catch (KeesException e) {
			Mensagem.erro("Erro ao Alterar");
		}
	}
	
	public void inserir() {
		try{
			obj.setGrupo(new GrupoDao().getId(obj.getGrupo().getId()));
			new UsuarioDao().save(obj);
			limpar();
			lista = new UsuarioDao().getAll();
			Mensagem.sucesso("Salvo com sucesso");
		} catch (KeesException e) {
			Mensagem.erro("Erro ao Salvar");
		}
	}
		
	public void excluir() {
		try{
			new UsuarioDao().delete(obj);
			limpar();
			lista = new UsuarioDao().getAll();
			Mensagem.sucesso("Excluido com Sucesso");
		} catch (KeesException e) {
			Mensagem.erro("Erro ao Excluir");
		}
		
	}
	
	public void alterar() {
		try{
			obj.setGrupo(new GrupoDao().getId(obj.getGrupo().getId()));
			new UsuarioDao().edit(obj);
			limpar();
			lista = new UsuarioDao().getAll();
			Mensagem.sucesso("Alterado com Sucesso");
		} catch (KeesException e) {
			Mensagem.erro("Erro ao Aletarr");
		}
		
	}
	
	public List<Grupo> getComboGrupo() {
		return comboGrupo;
	}
	public void setComboGrupo(List<Grupo> comboGrupo) {
		this.comboGrupo = comboGrupo;
	}
	public List<SelectItem> getComboSimNao() {
		return comboSimNao;
	}
	public void setComboSimNao(List<SelectItem> comboSimNao) {
		this.comboSimNao = comboSimNao;
	}
	public Usuario getObj() {
		return obj;
	}
	public void setObj(Usuario obj) {
		this.obj = obj;
	}
	public List<Usuario> getLista() {
		return lista;
	}
	public void setLista(List<Usuario> lista) {
		this.lista = lista;
	}
	
	

}
